During the past 50 years, the computational bandwidths and data-storage capacities of computer systems have increased exponentially. Currently available personal computers, which can be purchased for under $1,000, provide greater computational bandwidth and data-storage capacity than the largest supercomputers of two generations past. The rapid improvement in the capabilities of computer systems has provided the basis for significant, continuous improvements in application programs, management tools, operating systems, and a host of other software-implemented functionalities provided to computer users by various programs that execute within computer systems. While, 40 years ago, computer users routinely loaded programs coded in punched cards for stand-alone execution within primitive execution environments, even a casual personal-computer user can today launch tens of powerful, concurrently-executing application programs that interact with one another as well as with applications programs executing on remote computer systems and with remote data-storage systems.
Modern operating systems provide a variety of powerful computer-system management tools, as do certain application programs. The vast increase in functionality, computing bandwidth, and data-search capacity have led to increasingly complex patterns of computer usage. Even a casual computer user may easily create very complex computational states as a result of launching multiple application programs and interacting with them using multiple associated windows and graphical user interfaces. Management of computer systems in such complex contexts is not adequately addressed by many currently-available tools and utilities. For this reason, researchers and developers, operating-system and application-program developers, computer vendors, software vendors, and ultimately users of computer systems continue to seek useful and powerful management tools to assist computer users in managing the complex runtime states that users may create during the course of launching and interacting with multiple application programs.